package com.tedu.api.list;

import org.directwebremoting.json.JsonUtil;
import org.junit.jupiter.api.Test;

import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;

/**
 * 存放相同的数据-------数组
 * 数组定义：int[] i=new int[];  定长
 * 需求：存898个元素，不显示任何类型，基本数据类型，引用类型
 * 集合解决上述问题
 * 集合：存不确定的元素数，村任意类型【限定类型】【重点】
 * 包位置：Java.util
 * Collection 顶级容器  接口
 * 作用：集合中提供了所有容器的通用方法，维护元素，操作元素
 *
 * Collection 顶级接口---创建对象，两个常用子接口
 * List集合【接口】：可重复集和，并且有序【存储特点】
 * List集合【子接口】ArrayList  数组集合
 * Set集合【接口】：不可重复集合【存储特点】
 */
public class CollectionAPI {
    /**
     * Collection 对象方法
     * add()方法    返回值：boolean
     * 语法：add 任何类型元素
     * 作用：向当前集合中添加给定元素，可以为任何类型！
     *      如果元素存入成功，返回ture，元素存入失败，返回false
     * size()方法   返回值：int
     * 作用：返回集合个数----【数组length：返回数组长度】
     * isEmpty()方法    返回值：boolean
     * 作用：判断元素是否为空，返回集合元素有值【不是空】，返回值false
     *                               没有值【为空】，返回值ture
     * clear()方法    返回值：void
     * 作用：清空集合元素
     */
    @Test
    public void CollectionAPI(){
        //创建顶级集合容器:不定长
        Collection c=new ArrayList();
        c.add("one");
        c.add(2);
        c.add(new Frame());
 //     c.add(ture);
        c.add('1');
        c.add(1.2);
        System.out.println("顶级集合容器："+c);
    //    c.clear(); //清空元素
        boolean b=c.isEmpty();
        System.out.println(""+b);

    }
    /**
     * remove    返回值：boolean
     *
     */
    @Test
    public void testRemove(){
        Collection c=new ArrayList();
        c.add("2");c.add("3");c.add("d");
        c.add("4");c.add("5");c.add("5");
        System.out.println("集合元素："+c);
        c.remove("3");
        System.out.println("删除集合元素："+c);
    }
    /**
     * addAll(Collection c)方法  返回值：boolean
     * 作用：将给定集合中所有元素添加到另外一个集合中，当添加完毕后
     *      返回值true
     */
    @Test
            public void testAll(){
        //创建一个集合
        Collection c1=new ArrayList();
        c1.add("web");c1.add("java");c1.add("nc");
        //创建第二个集合
    //    c2.add("gp");c2.add("php");c2.add("net");
        //并集 c1集合元素添加到c2集合元素中
        boolean b=c1.addAll(c1);
        System.out.println("并集是否陈工："+b);
        System.out.println("病机结果："+c1);
    }
    /**
     * containsAll()    返回值：boolean
     * 作用：判断当前集合是否包含给定集合中的所有元素
     * 判断：两个集合所有的元素是否一致
     *  true   两个集合元素完全一致
     *  false  两个集合元素不分元素不一致
     */
    @Test
    public void testContainAll(){
        Collection c1=new ArrayList();
        c1.add("go");c1.add("java");
        Collection c2=new ArrayList();
        c2.add("go"); c2.add("java");
        //判断：c1集合是否包含c2集合【集合存入元素顺序不一致】
        boolean b=c1.containsAll(c2);
        System.out.println("c1集合是否包含c2集合元素："+b);
    }

    /**
     * removeAll(Collection c)   返回值boolean
     * 作用：删除当前集合中与给定集合中共有元素【交集】
     *    元素判断【底层】   一次equals判断
     */
    @Test
    public void testRemoveAll




    (){
        Collection c1=new ArrayList();
        c1.add("1");c1.add("2");c1.add("3");
        Collection c2=new ArrayList();
        c2.add("2");c2.add("2");c2.add("4");
        boolean b=c1.removeAll(c2);
        System.out.println("交集是否成功"+b); //true
        System.out.println("交集集合结果"+c1);//123
    }

}
